#include "functions.h"

int main() {
  apontador raiz = NULL;
  int op;
  int flag_null = 1;

  clear_screen();
  printf("Lista 13 - Arvore binaria\n");
  do {
    printf(" 1) Inserir elementos na Arvore\n");
    printf(" 2) Remover elementos da Arvore\n");
    printf(" 3) Caminhamento pre-ordem (R E D)\n");
    printf(" 4) Caminhamento em-ordem (E R D)\n");
    printf(" 5) Caminhamento pos-ordem (E D R)\n");
    printf(" 6) Pesquisa por valor na arvore\n");
    printf(" 7) Esvaziar arvore\n");
    printf(" 0) Encerrar o programa\n");
    printf(" _>");
    scanf("%d", &op);

    switch (op) {
      case 0: break;
      case 1: {
        insere_nos(&raiz);
        flag_null = 0;
        break;
      }
      case 2: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else
          remover_nos(&raiz);
        break;
      }
      case 3: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else
          caminhamentos(raiz, op);
        break;
      }
      case 4: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else
          caminhamentos(raiz, op);
        break;
      }
      case 5: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else
          caminhamentos(raiz, op);
        break;
      }
      case 6: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else
          consulta(raiz);
        break;
      }
      case 7: {
        if(flag_null){
          printf("Adicione elementos na arvore primeiro!\n");
          pause();
        }
        else{
          esvazia_arvore(&raiz);
          flag_null = 1;
        }
        break;
      }
      default: {
        printf("Opcao invalida!\n");
        pause();
      }
    }
  clear_screen();
  } while (op != 0);

  return 0;
}


